package cn.micai.base.asyn;

import java.util.WeakHashMap;

/**
 * 描述：统一管理项目中的回调
 * <p>
 *
 * @author: 赵新国
 * @date: 2018/6/5 15:15
 */
public class CallbackManager {

    /**
     * WeakHashMap 弱键值对引用缓存回调接口
     */
    private static final WeakHashMap<Object, IGlobalCallback> CALLBACKS = new WeakHashMap<>();

    /**
     * 静态类部类实现单例
     */
    private static class Holder {
        private static final CallbackManager INSTANCE = new CallbackManager();
    }

    public static CallbackManager getInstance() {
        return Holder.INSTANCE;
    }

    /**
     * 添加全局回调
     * @param tag
     * @param callback
     * @return
     */
    public CallbackManager addCallback(Object tag, IGlobalCallback callback) {
        CALLBACKS.put(tag, callback);
        return this;
    }

    /**
     * 获取指定回调的接口
     * @param tag
     * @return
     */
    public IGlobalCallback getCallback(Object tag) {
        return CALLBACKS.get(tag);
    }

}
